package cn.bigcontainer.alt.workflow.po;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import cn.bigcontainer.alt.common.entity.BigMap;
import cn.bigcontainer.alt.common.po.BasePo;
import cn.bigcontainer.alt.common.po.Po;
import cn.bigcontainer.alt.common.util.WoKit;
import cn.bigcontainer.alt.meta.typehandler.BigMapHandler;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 流程任务定义
 * 
 * @author cailei
 * @create_date 2011-3-13
 */
@Data
@TableName(autoResultMap = true)
@Accessors(chain = true)
public class MTaskDefinition extends BasePo {

	@TableId
	protected String id;

	/**
	 * 并行，用于会签
	 */
	protected Integer multiple = 0;

	/**
	 * 下一个任务表达式，解析出来为下一个任务MTaskDefinition
	 */
	protected String taskExpression;

	/**
	 * 任务路由器，用于获取下一个任务
	 */
	protected String taskRouter;

	/**
	 * 当前任务候选人表达式，用于获取当前任务候选人集合
	 */
	protected String taskCandidateExpression;

	/**
	 * 当前任务候选人路由器，用于获取当前任务候选人集合
	 */
	protected String taskCandidateRouter;

	/**
	 * 是否决策任务
	 */
	protected Integer review = 0;

	protected Integer idx = 0;

	/**
	 * MView(type=form).id
	 */
	protected String formViewId;

	/**
	 * 流程定义id，MApp(type=workflow).id
	 */
	protected String processDefinitionId;

	@TableField(typeHandler = BigMapHandler.class)
	protected BigMap<String, Object> data = new BigMap<>();// text

	public MTaskDefinition(Po po) {
		WoKit.cloneBySetter(po, this);
	}

	public MTaskDefinition() {
	}
}
